Demand for network connectivity has been rapidly increasing. Data traffic across a computer network can be processed by a plurality of processors to distribute the load. Conventional methods for distributing data packets have relied on static mechanisms and do not adapt to changes in the amount of traffic. For example, the Intel® 82599 10 GbE Controller relies on fixed methods for distributing data packets, such as a Flow Director method, without any ability to adapt to changing traffic behavior. (See http://www.intel.com/content/www/us/en/ethemet-controllers/82599-10-gbe-controller-datasheet.html). The Flow Director method assigns rigid rules that direct specific data types to specific data queues for processing. The Flow Director may filter data packets based on the contents of and/or identifying information associated with the data packets such as, for example, VLAN header, source IP and destination IP address, source port and destination port numbers, Ipv4/Ipv6 and UDP/TCP or SCTP protocol match, a flexible 2-byte tuple anywhere in the first 64 bytes of the packet, or target pool number. However, none of these factors are dependent on the changing levels of data traffic or the amount of workload that is currently being handled by each processor. This inability to adapt to changing levels of data traffic results in inefficient use of resources, wasted processing power, and prematurely requiring use of additional capacity of systems.
As the demand for network usage increases, there is a need to expand capacity, consolidate systems, and reduce costs. One possible solution for addressing increased workloads is to assign multiple processor cores to perform a certain task, but this raises the challenge of seamlessly migrating an existing task, which was designed for a single processor core, onto multiple processor cores, without encountering performance degradation or other issues. It is therefore desirable to provide a method and system for processing data packets in a computer network that adapts to the changing needs of the data traffic and provides improved processing efficiency.